// 公共方法
import common from './common.js'
import store from '@/store';
import ENV_CONFIG from '@/config/env.js'

export default {
	install(Vue) {
		// let URL = ENV_CONFIG[process.env.ENV_TYPE].baseUrl;
		let URL;
		if (process.env.NODE_ENV === 'development') {
			console.log('测试环境');
			URL = 'https://wmtest.mtj.cdydsy.com/'
		} else {
			console.log('生产环境');
			URL = 'https://saas.mtj.cdydsy.com/'
		}
		// 当前微信appid
		// #ifdef MP-WEIXIN
		Vue.prototype.$wxMinAppid = uni.getAccountInfoSync().miniProgram.appId;
		// #endif
		Vue.prototype.$baseUrl = `${URL}user/`;
		Vue.prototype.$uploadBaseUrl = `${URL}user/file/upload`;
		/**
		 * @desc GET请求
		 * @param url  接口地址
		 * @param params 参数
		 */
		Vue.prototype.$get = function(url, params = {}) {
			return this.$request('GET', url, params);
		}
		/**
		 * @desc POST请求
		 * @param url  接口地址
		 * @param params 参数
		 */
		Vue.prototype.$post = function(url, params = {}) {
			return this.$request('POST', url, params);
		}
		/**
		 * @desc http请求
		 * @param method  请求方式
		 * @param url  接口地址
		 * @param params 请求参数
		 */
		Vue.prototype.$request = function(method, url, params = {}, header = {}) {
			return new Promise((resolve, reject) => {
				uni.request({
					method: method,
					url: this.$baseUrl + url,
					data: params,
					dataType: 'json', //这里修改成jsonp
					header: this.$getHeaders(header)
				}).then(res => {
					if (res.statusCode == 200) { // 成功
						resolve(res.data)
						return false;
					}
					if (res.statusCode == 500) { // 失败
						resolve(res.data)
					}
					if (res.statusCode == 400) { // 失败
						resolve(res.data)
					}
					if (res.statusCode == 203 || res.statusCode == 403) { // 登录失效
						Vue.prototype.$removeAllUserStorage();
						Vue.prototype.$showToast('登录已失效，请重新登录')
						setTimeout(function() {
							Vue.prototype.$toLogin();
							store.dispatch('init/getInit')
						}, 1000)
					} else {
						reject()
					}
				}).catch(
					(response) => {
						reject(response)
					}
				)
			})
		}
		/**
		 * @desc 请求头数据
		 */
		Vue.prototype.$getHeaders = function(e) {
			let header = {
				"Authorization": this.$getToken(),
				"Content-type": 'application/x-www-form-urlencoded',
			}
			return header
		}
		/**
		 * @desc 获取用户token
		 */
		Vue.prototype.$getToken = function() {
			try {
				const token = uni.getStorageSync('token');
				if (token) {
					return token
				} else {
					return ''
				}
			} catch (e) {}
		}
		/**
		 * @desc 清除用户数据
		 */
		Vue.prototype.$removeAllUserStorage = function() {
			uni.setStorageSync('is_click', true)
			uni.removeStorageSync('token');
			uni.removeStorageSync('searchHistory');
			store.commit('user/setIsLogin', false)
		}
	}
}